home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / bits / mathinline.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  2KB  |  54 lines

  1. /* Inline math functions for x86-64.
  2.    Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.    Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef _MATH_H
  22. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  23. #endif
  24.  
  25. #ifndef __extern_inline
  26. # define __MATH_INLINE __inline
  27. #else
  28. # define __MATH_INLINE __extern_inline
  29. #endif
  30.  
  31.  
  32. #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
  33.  
  34. /* Test for negative number.  Used in the signbit() macro.  */
  35. __MATH_INLINE int
  36. __NTH (__signbitf (float __x))
  37. {
  38.   __extension__ union { float __f; int __i; } __u = { __f: __x };
  39.   return __u.__i < 0;
  40. }
  41. __MATH_INLINE int
  42. __NTH (__signbit (double __x))
  43. {
  44.   __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
  45.   return __u.__i[1] < 0;
  46. }
  47. __MATH_INLINE int
  48. __NTH (__signbitl (long double __x))
  49. {
  50.   __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
  51.   return (__u.__i[2] & 0x8000) != 0;
  52. }
  53. #endif
  54.